package modelo;

import java.sql.Date;
import java.util.Iterator;
import java.util.List;

import Excepciones.AsientoYaReservadoExeption;

public class Usuario {
	String nombre_usuario;
	String nombre;
	String apellido;
	String codigo_validacion;
	String email;
	Date fechaNac;
	boolean validado;
	Sistema sistema;
	String contrasena;
	String estado;


	public Usuario(String nombre_usuario2, String nombre2, String apellido2, 
			String email2, Date fechaNac2, String miContrasena) {
		this.nombre_usuario = nombre_usuario2;
		this.nombre = nombre2;
		this.apellido = apellido2;
		this.email = email2;
		this.fechaNac = fechaNac2;
		this.validado = false;
		this.contrasena = miContrasena;
		this.estado = "OFFLINE";
	}
	
	//////////////////////////////////////ACCESORS///////////////////////
	
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	public String getContrasena() {
		return contrasena;
	}
	public void setContrasena(String contrasena) {
		this.contrasena = contrasena;
	}
	public Sistema getSistema() {
		return sistema;
	}
	public void setSistema(Sistema sistema) {
		this.sistema = sistema;
	}
	public boolean isValidado() {
		return validado;
	}
	public void setValidado(boolean validado) {
		this.validado = validado;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellido() {
		return apellido;
	}
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
	public String getNombre_usuario() {
		return nombre_usuario;
	}
	public void setNombre_usuario(String nombre_usuario) {
		this.nombre_usuario = nombre_usuario;
	}
	public String getCodigo_validacion() {
		return codigo_validacion;
	}
	public void setCodigo_validacion(String codigo_validacion) {
		this.codigo_validacion = codigo_validacion;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public java.sql.Date getFechaNac() {
		return fechaNac;
	}
	public void setFechaNac(Date fechaNac) {
		this.fechaNac = fechaNac;
	}
	
///////////////////////////////Methods////////////////////////////////////
	
	public void reservar(Asiento asiento)throws AsientoYaReservadoExeption{
		try {
			asiento.reservarPara(this);
		} catch (AsientoYaReservadoExeption ar) {
			//mostrar cartel de error pidiendo elegir otro asiento
		}		
	}
	
	public void reservarGrupoDe(List<Asiento> grupoDeAsientos){
		for (Asiento a : grupoDeAsientos) {
			try {
				a.reservarPara(this);
			} catch (AsientoYaReservadoExeption ar) {
				//PENSAR que hacer (pendiente!!!)
			}
		}
	}
	
	public List<Asiento> consultarAsientosDisponibles(){
		//consultar la base de datos
		//traer registros de asientos NO reservados
		//convertirlos en objetos
		//meterlos en una lista
		//y devolver como resultado
		
		return null;
	}

}
